/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.rm.beans;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import org.rm.entidades.exp.ExpCritico;
import org.rm.entidades.exp.ExpHechizo;
import org.rm.entidades.exp.ExpIdea;
import org.rm.entidades.exp.ExpManiobra;
import org.rm.entidades.exp.ExpPieza;
import org.rm.entidades.exp.ExpViaje;
import org.rm.entidades.exp.ExpVida;

/**
 * Clase con métodos de utilidad para los controladores. Además, guarda la relación
 * entre los tipos de experiencia y sus nombres. El resto de clases deben utilizar
 * sus métodos cada vez que quieran recuperar los nombres de los tipos de experiencias
 * @author ffbeltran
 */
public class GestorUtil {

    private static Map<String, Class> entidades;
    static {
        entidades = new HashMap<String, Class>();
        entidades.put("vida", ExpVida.class);
        entidades.put("viaje", ExpViaje.class);
        entidades.put("pieza", ExpPieza.class);
        entidades.put("maniobra", ExpManiobra.class);
        entidades.put("idea", ExpIdea.class);
        entidades.put("hechizo", ExpHechizo.class);
        entidades.put("critico", ExpCritico.class);
    }

    /**
     * Devuelve una colección de objetos {@code Class} representando a los
     * distintos tipos de experiencias
     * @return {@code Collection} de objetos {@code Class}
     */
    public static Collection<Class> getEntidades() {
        return entidades.values();
    }

    /**
     * Devuelve los distintos nombres representando a los distintos tipos de
     * experiencias
     * @return {@code Set} de {@code String}
     */
    public static Set<String> getNombresEntidades() {
        return entidades.keySet();
    }

    /**
     * Devuelve la clase asociada al nombre pasado por argumento
     * @param name nombre del tipo de experiencia. Debe ser alguno de los valores
     * devueltos por {@link #getNombresEntidades() }
     * @return objeto {@code Class} de la experiencia
     */
    public static Class getEntidad(String name) {
        return entidades.get(name);
    }
}
